﻿using HomeWork;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HomeWork
{
    class Article : Content,IValuable
    {

             
        //public String Tag { get; set; } //标签       
        public HelpMoney HelpMoney { get; set; } //帮帮币
        public IList<Keyword> KeyWords { get; set; } //多对多关系：关键词
        public IList<Comment> Comments { get; set; } //多个评论
        public IList<Appraise> Appraises { get; set; } //点赞系统
        public String Category { get; set; }//分类

        // 实现IValuable接口
        public ValuableType Type => ValuableType.Article; // 标记为“文章”类型
        public Guid AuthorId { get; init; } // 文章作者ID（需新增）
        public int LikeCount { get; set; } = 0; // 点赞数（替代LikeSystem的计数）
        public int DislikeCount { get; set; } = 0; // 点踩数
        public DateTime CreatedAt { get; init; } = DateTime.Now;

        public Article()
        {
            
        }

        public Article(int id, DateTime createTime)
       : base(id, createTime) // 调用父类的构造函数，初始化 CreateTime
        {
            // 父类的 CreateTime 已通过 base 初始化，这里无需再处理
        }


        public override bool Equals(object? obj)
        {
            return this.Body == ((Article)obj).Body && this.Title == ((Article)obj).Title;
        }

        //发布文章
        [HelpMoneyChanged(10,Message ="发布文章消耗帮帮币")]
        public override void Publish()
        {
            ValidateAuthorNotNull();
            HelpMoney.Decrease();
            Console.WriteLine("发布了一篇文章并消耗一枚帮帮币");
        }



        public override string ToString()
        {
            return $"标题是{Title}内容是{Body} ";
        }

    }
}
